package com.xunlai.infra.permission.business.converter;

import com.xunlai.infra.permission.business.dao.entity.*;
import com.xunlai.infra.permission.business.vo.route.*;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

/**
 * @author liang
 * @date 8/8/23 5:49 PM
 */
@Mapper
public interface RouteConverter {

    RouteConverter INSTANCE = Mappers.getMapper(RouteConverter.class);

    RouteInfo convertCreateVo2RouteEntity(RouteCreateReqVo routeCreateReqVo);

    RouteIntroduction convertCreateVo2IntroductionEntity(RouteCreateReqVo routeCreateReqVo);

    RouteSchedule convertCreateVo2ScheduleEntity(RouteScheduleVo routeScheduleVo);

    RouteScheduleVo convertScheduleEntity2Vo(RouteSchedule routeSchedule);

    RouteExtraIntro convertCreateVo2ExtraIntroEntity(RouteCreateReqVo routeCreateReqVo);

    RouteInfo convertQueryVo2InfoEntity(RouteQueryVo routeQueryVo);

    RouteListVo convertInfoEntity2ListVo(RouteInfo routeInfo);

    RouteBindPoster convertBindVo2Entity(RouteBindPosterVo routeBindPosterVo);

    RouteType convertCreateVo2RouteTypeEntity(RouteTypeCreateVo routeTypeCreateVo);

    RouteTypeListVo convertRouteTypeEntity2ListVo(RouteType routeType);

    RouteType convertQueryVo2RouteTypeEntity(RouteTypeQueryVo routeTypeQueryVo);


    RouteSubject convertCreateVo2RouteSubjectEntity(RouteSubjectCreateVo routeSubjectCreateVo);

    RouteSubjectListVo convertRouteSubjectEntity2ListVo(RouteSubject routeSubject);

    RouteSubject convertQueryVo2RouteSubjectEntity(RouteSubjectQueryVo routeSubjectQueryVo);


    RouteTemplate convertCreateVo2RouteTemplateEntity(RouteTemplateCreateVo routeTemplateCreateVo);

    RouteTemplateListVo convertRouteTemplateEntity2ListVo(RouteTemplate routeTemplate);

    RouteTemplate convertQueryVo2RouteTemplateEntity(RouteTemplateQueryVo routeTemplateQueryVo);

    RouteContactVo convertContactEntity2Vo(RouteContact routeContact);

    RouteContact convertTransferVo2ContactEntity(RouteTransferVo routeTransferVo);

    RouteContact convertBatchTransferVo2ContactEntity(RouteBatchTransferVo routeBatchTransferVo);
}
